package study.b_informationhiding;

// p27. 필드와 메서드 
public class Mail {
	// 아래 validator는 아래 send(String message)와 마찬가지로,
	// Mail 객체를 사용하는 사용자에게 노출될 필요가 전혀 없기 때문에 private으로 선언한다. 
	private MessageValidator validator = new MessageValidator();
	
	public boolean sendMessage(String receiver, String message) {
		// Mail과 Validator는 메세지를 통해 협력하는 관계이다.
		// Validator는 메세지의 유효성을 검사해주는 isValid(String message)라는 서비스를 제공하고,
		// Mail은 메세지를 보내기 전에 Validator에게 유효성 검사 요청 메세지를 보내어 서비스를 받는다.
		if (validator.isValid(message) == false) {
			return false;
		}
		
		send(message);
		
		return true;
	}

	// 아래 메서드는 사용자에게 드러나지 않는다.
	private void send(String message) {
		// 메일을 통해 메세지를 보내는 코드가 있다고 가정한다.
	}
}
